package com.cg.bank.util;

/**
 * 分页管理
 * 
 * @author chunges
 * @date 2018年9月2日 下午3:49:29
 * @version V1.0
 */

public class Page {
	/**
	 * 记录总数
	 */
	private int recordCount;

	/**
	 * 分页总数 <strong>此值无需手动设定</strong>
	 */
	private int pageCount;

	/**
	 * 分页大小
	 */
	private int pageSize;

	/**
	 * 查询的起始分页号(数据层面) <strong>此值无需手动设定</strong>
	 */
	private int startno;

	/**
	 * 查询的分页号(用户层面)
	 */
	private int pageno;

	/**
	 * 获得默认分页器实例
	 * <p>
	 * 应该为此分页器手动设置一个总记录数 <strong>(此操作是必须的)</strong>
	 * </p>
	 */
	public Page() {
	}

	/**
	 * 创建分页器实例，设定分页记录总数
	 * 
	 * @param recordCount 分页记录数
	 */
	public Page(int recordCount) {
		this.recordCount = recordCount;
		init();
	}

	private void init() {
		pageSize = 10;
		// 设置分页总数 (需要先转为double计算)
		double tempResult = (double)recordCount / (double)pageSize;
		if (tempResult % 1 != 0){
			pageCount =(int) (tempResult +1) ;
		} else {
			pageCount = (int) tempResult;
		}
	}

	public void setRecordCount(int recordCount) {
		this.recordCount = recordCount;
		init();
	}

	public int getRecordCount() {
		return recordCount;
	}

	public int getPageCount() {
		return pageCount;
	}

	/**
	 * 设置分页大小
	 * <p>
	 * <strong>必须在1~15之间，否则将使用默认值(10页)</strong>
	 * </p>
	 * 
	 * @param pageSize
	 */
	public void setPageSize(int pageSize) {
		if (pageSize >= 1 && pageSize <= 15) {
			this.pageSize = pageSize;
		}
	}

	public int getPageSize() {
		return pageSize;
	}

	public int getStartno() {
		return startno;
	}

	/**
	 * 设置查询分页
	 * <p>
	 * <strong>必须在1~pageCount之间，否则将使用默认值(1/pageCount)</strong>
	 * </p>
	 * 
	 * @param pageno
	 */
	public void setPageno(int pageno) {
		if (pageno < 1) {
			pageno = 1;
		} else {
			this.pageno = pageno;
		}
		startno = (pageno - 1) * 10;
	}

	public int getPageno() {
		return pageno;
	}

	@Override
	public String toString() {
		return "Page [recordCount=" + recordCount + ", pageCount=" + pageCount + ", pageSize=" + pageSize + ", startno="
				+ startno + ", pageno=" + pageno + "]";
	}

}